OWASPが公開している”セキュアではない”Webアプリ「OWASP Juice Shop」を試してみる
森永です。
セキュリティ製品の検証などで脆弱性のあるWebアプリが欲しいということがあります。自分で作るのもいいのですが、手軽に使える"セキュアではない"Webアプリがないかを探してみました。Webアプリのセキュリティに関するコミュニティであるOWASP(Open Web Application Security Project)が「OWASP Juice Shop」という脆弱性のあるWebアプリを公開していたので試してみます。
OWASP Juice Shopとは
OWASP(Open Web Application Security Project)が公開しているWebアプリです。OWASPはインパクトのある脆弱性をOWASP Top 10として発表しており、その脆弱性をふんだんに盛り込んだものとなっています。これを使ってセキュリティの検証をしたり、ハードニングのトレーニングをすることが出来るというわけです。
いくつものチャレンジが用意されており、それを一つずつクリアすることで知識を深めていくこともできます。チャレンジはあくまでもブラックボックスになっているWebアプリに対する攻撃で行うため、バックエンドのソースコードを見たり、ログを見るのはNG行為です。あくまでも、ブラウザや開発者ツールなど表から叩ける箇所を叩いて攻撃を仕掛けましょう。
試してみる
セットアップ
様々なセットアップ方法が案内されています。DockerコンテナをEC2で動かす方法があるのでこちらでやってみます。(ECSでもいいんですがtoo muchな気がするので…)
やることは、Amazon LinuxでEC2インスタンスを構築する際にUser Dataを仕込むだけです。
#!/bin/bash yum update -y yum install -y docker service docker start docker pull bkimminich/juice-shop docker run -d -p 80:3000 bkimminich/juice-shop
あとはセキュリティグループでHTTP(80)番ポートを開けておいて下さい。怖いのでソースIPは絞っておきました。
インスタンスが起動したのでアクセスしてみます。
ジュースを売るECサイトが立ち上がりました!(あくまでデモです。)日本語にも対応しています。
攻撃してみる
せっかくなので幾つか簡単な攻撃を仕掛けてみましょう。
攻撃を仕掛けるにはサイトの特性を理解する必要がありますので、一般ユーザとして(非攻撃者として)使用してみてから挑みましょう。
詳しい攻撃方法はネタバレになるので控えています。
XSS(クロスサイトスクリプティング)
まずはXSS(クロスサイトスクリプティング)から。XSSといっても物凄く難しいのですが、今回は非常に初歩的なXSSで試してみます。これはやり方すぐに分かっちゃいますね。
SQLインジェクション
検索フォームで色々いじってみます。
ひとまず';
などを打って開発者ツールのコンソールを見てみると、SQL文がそのまま見えちゃいました…
あとはSQL文を見ながらゴニョゴニョすると既に販売を終わったアイテムなどが見れるようになっちゃいます。
スコアボード
チャレンジの一つでもあるので詳しい場所は言えませんが、スコアボードと言うものが用意されています。クリアしたチャレンジは解決済みと表示されます。ゲーム好きとしてはたまらないですね。
最後に
色々いじってみたところ、実際に使用されているWebアプリでこんな脆弱性があったら笑えないなぁ…というものが数多く。。。一度攻撃者の立場になってみることで分かる対策方法がありますのでぜひ一度試してみて下さい。
このWebアプリにWAFを被せてXSSやSQLインジェクションを防げるか検証することもできそうですね(あくまでもアプリ側で対応するのが前提ですよ!)